package servlet

import "gdmin/model"

// swagger:parameters LogQuery
type LogQuery struct {
	Path        string `gorm:"-" json:"path"`
	Method      string `gorm:"-" json:"method"`
	Body        string `gorm:"-" json:"body"`
	QueryString string `gorm:"-" json:"queryString"`
	UserId      int    `gorm:"-" json:"userId"`
	Pagination
}

// swagger:parameters RoleBindMenu
type RoleBindMenu struct {
	RoleId  int   `json:"roleId"`
	MenuIds []int `json:"menuIds"`
}

// swagger:parameters QueryResMenu
type QueryResMenu struct {
	Pagination
	// 菜单名称
	Name string `json:"name,omitempty" query:"name"`
	Path string `json:"path,omitempty" query:"path"`
	Pid  int    `json:"pid"`
	Icon string `json:"iconPic"`
}

// swagger:parameters QueryResButton
type QueryResButton struct {
	Pagination
	// 按钮名称
	Name   string `json:"name,omitempty" query:"name"`
	MenuId int    `json:"menuId"`
	Code   string `json:"code" query:"code"`
}

// swagger:parameters QueryResApi
type QueryResApi struct {
	Pagination
	// 接口名称
	Name   string `json:"name,omitempty" query:"name"`
	MenuId int    `json:"menuId"`
}

// swagger:parameters LoginReq
type LoginReq struct {

	// 用户名
	LoginName string `json:"loginName"`

	// 密码
	Password string `json:"password"`
}

// swagger:parameters QueryDeptReq
type QueryDictReq struct {
	Pagination
	// 字典名称
	Name string `json:"name,omitempty" query:"name"`

	//字典编码
	Code string `json:"code,omitempty" query:"code"`

	//字典类型
	Type int `json:"type,omitempty" query:"type"`
	Pid  int `json:"pid"`
}

// swagger:parameters QueryDictItemReq
type QueryDictItemReq struct {
	Pagination
	// 字典名称
	Name   string `json:"name,omitempty" query:"name"`
	DictId int    `json:"dictId,omitempty" query:"dictId"`
}

// swagger:parameters CreateDictReq
type CreateDictReq struct {
	//字典名称
	Name string `json:"name,omitempty"`

	//字典编码
	Code string `json:"code,omitempty"`

	//字典类型
	Type int `json:"type,omitempty"`

	//上级id
	Pid int `json:"pid,omitempty"`
} // swagger:parameters UpdateDictReq
type UpdateDictReq struct {
	CreateDictReq

	//主键
	Id int `json:"id"`
}

// swagger:parameters CreateDictItemReq
type CreateDictItemReq struct {
	// 字典id
	DictId int `json:"dictId,omitempty"`
	// 字典项名称
	Name string `json:"name,omitempty"`
	// 字典项编码
	Code string `json:"code,omitempty"`
}

// swagger:parameters UpdateDictItemReq
type UpdateDictItemReq struct {
	CreateDictItemReq
	//主键
	Id int `json:"id"`
}

// swagger:parameters CreateMenuBindApi
type CreateMenuBindApi struct {
	MenuId int   `json:"menuId,omitempty"`
	ApiIds []int `json:"apiIds,omitempty"`
}

// swagger:parameters CreateResApiReq
type CreateResApiReq struct {
	// 请求方式
	Method string `json:"method,omitempty"`
	// 请求地址
	Path string `json:"path,omitempty"`
	// 接口名称
	Name string `json:"name,omitempty"`
}

// swagger:parameters UpdateResApiReq
type UpdateResApiReq struct {
	CreateResApiReq
	Id int `json:"id,omitempty"`
}

// swagger:parameters UpdateResButtonReq
type CreateResButtonReq struct {
	// 唯一编码
	Uid string `json:"uid,omitempty"`
	// 名称
	Name string `json:"name,omitempty"`
	// 菜单id
	MenuId int `json:"menuId,omitempty"`
}

// swagger:parameters UpdateResButtonReq
type UpdateResButtonReq struct {
	CreateResButtonReq
	Id int `json:"id,omitempty"`
}

// swagger:parameters CreateResMenuReq
type CreateResMenuReq struct {
	// 菜单地址
	Path string `json:"path"`
	// 菜单名称
	Name string `json:"name"`
	// 图标
	Icon string `json:"iconPic"`
	// 上级id
	Pid int `json:"pid"`
}

// swagger:parameters UpdateResMenuReq
type UpdateResMenuReq struct {
	CreateResMenuReq
	Id int `json:"id,omitempty"`
}

// swagger:parameters UserBindDeptReq
type UserBindDeptReq struct {
	UserId     int   `json:"userId" `
	DeptIds    []int `json:"deptIds" `
	MainDeptId int   `json:"mainDeptId" `
}

// swagger:parameters UserBindRoleReq
type UserBindRoleReq struct {
	UserId  int   `json:"userId" `
	RoleIds []int `json:"roleIds" `
}

// swagger:parameters CreateDeptReq
type CreateDeptReq struct {
	Name string `json:"name" `
	Pid  int    `json:"pid" `
}

// swagger:parameters UpdateDeptReq
type UpdateDeptReq struct {
	model.Dept
	Id int `json:"id,omitempty"`
}

// swagger:parameters QueryDeptReq
type QueryDeptReq struct {
	Pagination
	Name string `json:"name" query:"name"`
	Pid  int    `json:"pid" query:"pid"`
}

// swagger:parameters CreateUserReq
type CreateUserReq struct {
	// 姓名
	Name string `json:"name" `
	// 邮箱
	Email string `json:"email" vd:"email($)"`
	// 登录名
	LoginName string `json:"loginName" vd:"checkLoginName($)"`
	// 性别
	Sex string `json:"sex"`
	// 手机
	Phone string `json:"phone" `
	// 密码
	Password string `json:"password" `
}

// swagger:parameters UpdateUserReq
type UpdateUserReq struct {
	CreateUserReq
	// 主键
	Id int `json:"id,omitempty"`
}

// swagger:parameters CreateRoleReq
type CreateRoleReq struct {
	// 角色名称
	Name string `json:"name" query:"name"`
	// 编码
	Code string `json:"code" query:"code"`
}

// swagger:parameters UpdateRoleReq
type UpdateRoleReq struct {
	Id int
	// 角色名称
	Name string `json:"name" query:"name"`
	// 编码
	Code string `json:"code" query:"code"`
}

// swagger:parameters QueryRoleReq
type QueryRoleReq struct {
	Pagination
	// 角色名称
	Name string `json:"name" query:"name"`
	// 编码
	Code string `json:"code" query:"code"`
}

// swagger:parameters QueryUserReq
type QueryUserReq struct {
	Pagination
	// 姓名
	Name string `json:"name" query:"name"`
	// 登录名
	LoginName string `json:"loginName" query:"loginName"`
	// 手机
	Phone string `json:"phone" query:"phone"`
	// 性别
	Sex string `json:"sex" query:"sex"`
}

// swagger:parameters Pagination
type Pagination struct {
	// 页面行数
	PageSize int `json:"pageSize,omitempty" form:"pageSize" query:"pageSize" `
	// 页面起始位置
	Current int `json:"current,omitempty" form:"current" query:"current"`
	// 排序规则
	// 案例: create_time asc , id desc
	Sort string `json:"sort,omitempty" form:"sort" query:"sort"`
	// 总共多少行
	Total int64 `json:"total"`
	// 总共多少页
	TotalPages int `json:"total_pages"`
	// 行数据
	Records interface{} `json:"records"`
}

func (p *Pagination) GetOffset() int {
	return (p.GetPage() - 1) * p.GetLimit()
}

func (p *Pagination) GetLimit() int {
	if p.PageSize == 0 {
		p.PageSize = 10
	}
	return p.PageSize
}

func (p *Pagination) GetPage() int {
	if p.Current == 0 {
		p.Current = 1
	}
	return p.Current
}

func (p *Pagination) GetSort() string {

	if p.Sort == "" {
		p.Sort = "Id desc"
	}
	return p.Sort
}

// swagger:parameters IdsReq
type IdsReq struct {
	Ids []int `json:"ids" form:"ids"`
}
